<html>

<!--
   Licensed to the Apache Software Foundation (ASF) under one or more
   contributor license agreements.  See the NOTICE file distributed with
   this work for additional information regarding copyright ownership.
   The ASF licenses this file to You under the Apache License, Version 2.0
   (the "License"); you may not use this file except in compliance with
   the License.  You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
-->

<body>Avro kernel classes.

<p>A {@link org.apache.avro.Schema} provides an abstract definition of
  a data type.

<p>The in-memory representation of data is determined by {@link
  org.apache.avro.io.DatumReader} and {@link
  org.apache.avro.io.DatumWriter} implementations.  Generic
  implementations are provided in the {@link org.apache.avro.generic}
  package.  A {@link org.apache.avro.compiler.specific.SpecificCompiler
  compiler} can generate specific java classes and interfaces for
  schemas and protocols.  Schemas may be automatically generated for
  existing Java classes by reflection using the {@link
  org.apache.avro.reflect} package.

<p>Data of a given schema is always serialized identically, regardless
  of its in-memory representation, by traversing the schema and
  writing leaf values from the data structure with a {@link
  org.apache.avro.io.Encoder}.  Deserializing similarly proceeds by
  traversing the schema, reading leaf values with a {@link
  org.apache.avro.io.Decoder} and storing them in an in-memory data
  structure.

</body>
</html>
